home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / dev_libs / feelin040718 / demos / memorytest.e < prev    next >
Text File  |  2004-08-03  |  4KB  |  124 lines

  1. OPT PREPROCESS
  2.  
  3. MODULE 'exec/memory',
  4.        'dos/dos',
  5.        'feelin','libraries/feelin'
  6.  
  7. CONST SIZE=200,NUM=4000,ITEM=64
  8.  
  9. PROC main()
  10.    DEF pool,
  11.        i,array[NUM]:ARRAY OF LONG,mem,
  12.        ds1:datestamp,ds2:datestamp
  13.  
  14.    IF feelinbase := OpenLibrary('feelin.library',FV_VERSION)
  15.       WriteF('This test creates a memory pool with a thresh size of \d.\nThen it allocates \d items from the pool (\d in each puddle).\nExec pools and Feelin pools are tested.\n\nKeep in mind that F_Dispose() requires only the memory pointer as argument.\nF_Dispose() & F_DisposeP() will NEVER dispose a block that does not exists.\nMore over, memory freed is filled with $ABADF00D.\n\n',SIZE,NUM,ITEM)
  16.       Delay(50)
  17.  
  18.       IF pool := CreatePool(MEMF_CLEAR,SIZE * ITEM,SIZE)
  19.          WriteF('AllocsPooled() ')
  20.  
  21.          Forbid() ; DateStamp(ds1)
  22.          FOR i := 0 TO NUM - 1 DO array[i] := AllocPooled(pool,SIZE)
  23.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  24.  
  25.          WriteF('FreePooled()   ')
  26.          Forbid() ; DateStamp(ds1)
  27.          FOR i := 0 TO NUM - 1 DO array[i] := FreePooled(pool,array[i],SIZE) BUT NIL
  28.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  29.  
  30.          DeletePool(pool)
  31.       ENDIF
  32.  
  33.       IF pool := F_CreatePool(MEMF_CLEAR,SIZE,ITEM)
  34.          WriteF('F_NewP()       ')
  35.          Forbid() ; DateStamp(ds1)
  36.          FOR i := 0 TO NUM - 1 DO array[i] := F_NewP(pool,SIZE)
  37.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  38.  
  39.          WriteF('F_Dispose()    ')
  40.          Forbid() ; DateStamp(ds1)
  41.          FOR i := 0 TO NUM - 1 DO array[i] := F_Dispose(array[i])
  42.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  43.  
  44.          F_DeletePool(pool)
  45.       ENDIF
  46.  
  47.       IF pool := F_CreatePool(MEMF_CLEAR,SIZE,ITEM)
  48.          WriteF('F_NewP()       ')
  49.          Forbid() ; DateStamp(ds1)
  50.          FOR i := 0 TO NUM - 1 DO array[i] := F_NewP(pool,SIZE)
  51.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  52.  
  53.          WriteF('F_DisposeP()   ')
  54.          Forbid() ; DateStamp(ds1)
  55.          FOR i := 0 TO NUM - 1 DO array[i] := F_DisposeP(pool,array[i])
  56.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  57.  
  58.          F_DeletePool(pool)
  59.       ENDIF
  60.  
  61.       /*************/
  62.       /*** TEST2 ***/
  63.       /*************/
  64.  
  65.       WriteF('\nThis test creates a memory pool with a thresh size of \d.\nThen it allocates and dispose one item %ld times.\nExec pools and Feelin pools are tested.\n\n',SIZE,NUM)
  66.       Delay(50)
  67.  
  68.       IF pool := CreatePool(MEMF_CLEAR,SIZE * ITEM,SIZE)
  69.          WriteF('AllocsPooled() & FreePooled()')
  70.  
  71.          AllocPooled(pool,SIZE)
  72.  
  73.          Forbid() ; DateStamp(ds1)
  74.          FOR i := 0 TO NUM - 1
  75.             mem := AllocPooled(pool,SIZE)
  76.             FreePooled(pool,mem,SIZE)
  77.          ENDFOR
  78.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  79.  
  80.          DeletePool(pool)
  81.       ENDIF
  82.  
  83.       IF pool := F_CreatePool(MEMF_CLEAR,SIZE,ITEM)
  84.          WriteF('F_NewP() & F_Dispose()       ')
  85.  
  86.          F_NewP(pool,SIZE)
  87.  
  88.          Forbid() ; DateStamp(ds1)
  89.          FOR i := 0 TO NUM - 1
  90.             mem := F_NewP(pool,SIZE)
  91.             F_Dispose(mem)
  92.          ENDFOR
  93.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  94.  
  95.          F_DeletePool(pool)
  96.       ENDIF
  97.  
  98.       IF pool := F_CreatePool(MEMF_CLEAR,SIZE,ITEM)
  99.          WriteF('F_NewP() & F_DisposeP()      ')
  100.  
  101.          F_NewP(pool,SIZE)
  102.  
  103.          Forbid() ; DateStamp(ds1)
  104.          FOR i := 0 TO NUM - 1
  105.             mem := F_NewP(pool,SIZE)
  106.             F_DisposeP(pool,mem)
  107.          ENDFOR
  108.          DateStamp(ds2) ; Permit() ; saytime(ds1,ds2)
  109.  
  110.          F_DeletePool(pool)
  111.       ENDIF
  112.  
  113.       CloseLibrary(feelinbase)
  114.    ENDIF
  115. ENDPROC
  116.  
  117. PROC saytime(ds1:PTR TO datestamp,ds2:PTR TO datestamp)
  118.    DEF ticks
  119.  
  120.    ticks := ((((ds2.minute - ds1.minute) * 60)) * TICKS_PER_SECOND) + (ds2.tick - ds1.tick)
  121.  
  122.    WriteF('%12.ld per second (%4.ld ticks)\n',NUM * TICKS_PER_SECOND / ticks,ticks)
  123. ENDPROC
  124.